package android.team.app.network;

import java.util.List;
import java.util.jar.Attributes.Name;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpParams;

import android.content.Context;
import android.os.AsyncTask;

public class AsyncHttpBase extends AsyncTask<String, Integer, String> {

	public static final int STATUS_NETWORK_OK = 0;
	public static final int STATUS_NETWORK_OFF = 1;
	public static final int STATUS_NETWORK_ERROR = 2;
	public static final int STATUS_NETWORK_TIMEOUT = 3;
	public static final int STATUS_NETWORK_EXCEIPTION = 4;

	protected Context mContext;
	protected AsyncHttpResponseListener listener;
	protected HttpResponse response;
	protected List<NameValuePair> parameters;
	protected int statusCode;

	/**
	 * Xây dựng phương thức khởi tạo
	 * 
	 * @param context
	 * @param listener
	 * @param params
	 */

	public AsyncHttpBase(Context context, AsyncHttpResponseListener listener,
			List<NameValuePair> parameters) {

		this.mContext = context;
		this.listener = listener;
		this.parameters = parameters;

	}

	@Override
	protected String doInBackground(String... params) {
		// Được gọi khi thực hiện quá trình load data
		// Check nếu mảng có thì thực hiện gửi request
		boolean isNetWork = true;
		if (isNetWork) {
			return request(params[0]);
		} else {
			statusCode = STATUS_NETWORK_OFF;
			return null;
		}
	}

	// Xây dựng phương thức thực hiện lấy dữ liệu và trả về kiểu string
	protected String request(String url) {

		return null;
	}

	@Override
	protected void onPreExecute() {
		super.onPreExecute();

		// Được gọi để chạy ngầm và thực hiện lấy dữ liệu trên server
		listener.before();
	}

	@Override
	protected void onPostExecute(String result) {
		super.onPostExecute(result);

		// Được gọi khi quá trình lấy dữ liệu kết thúc
		listener.after(statusCode, response);
	}
	
	//Xây dựng phương thức tạo ra httpClient
	protected HttpClient createHttpClient(HttpParams params){
		
		return new DefaultHttpClient(params);
	}

}
